1
תגובות
היי,
היום קניתי את הספר של אלכס, התחלתי ללמוד ואני מציע לכל מי שעדיין מתלבט לקנות אותו!
עכשיו, יש לי בעיה קטנה עם פונקציה שכתבתי במחלקה לניהול קונטרולרים, זה הקוד של הפונקציה:
זה הקונטרולר:
לאחר שאני מבצע את הקוד בדפדפן, זה מציג לי שגיאה שהקונטרולר לא נמצא לאחר הייבוא.
למה זה קורה?
והאם הפונקציה הזו כתובה בצורה ייעילה וטובה?
היום קניתי את הספר של אלכס, התחלתי ללמוד ואני מציע לכל מי שעדיין מתלבט לקנות אותו!
עכשיו, יש לי בעיה קטנה עם פונקציה שכתבתי במחלקה לניהול קונטרולרים, זה הקוד של הפונקציה:
private static function checkControllerPath()
{
$currentController = self::controllerNameBuilder(self::$currentController); //מקבל את השם של מחלקת הקונטרולר על פי הקונטרולר הנוכחי שקבעתי.
if(file_exists(($dir = realpath(__DIR__ . "/../../controllers/" . $currentController . ".php")))) { //בודק אם הקונטרולר נמצא בנתיב לקונטרולרים ויוצר משנה עם נתיב למחלקת הקונטרולר הנוכחית
require $dir; //מייבא את קובץ מחלקת הקונטרולר הנוכחי
if (!class_exists($currentController, false)) //בודק האם קיים הקונטרולר הנוכחי לאחר הייבוא
throw new \Exception("Controller '$currentController' does not found"); //מציג שגיאה במידה ולא קיים הקונטרולר
} else { //אם לא נמצא הקונטרולר בנתיב
throw new \Exception("Controller '$currentController' does not found"); //מציג שגיאה על כך שנתיב הקונטרולר לא נמצא
}
self::$currentControllerPath = $dir; //שומר את הנתיב לקונטרולר במשתנה במחלקה
self::setCurrentAction(); //פונקציה היוצרת את הפעולה הנוכחית
}
{
$currentController = self::controllerNameBuilder(self::$currentController); //מקבל את השם של מחלקת הקונטרולר על פי הקונטרולר הנוכחי שקבעתי.
if(file_exists(($dir = realpath(__DIR__ . "/../../controllers/" . $currentController . ".php")))) { //בודק אם הקונטרולר נמצא בנתיב לקונטרולרים ויוצר משנה עם נתיב למחלקת הקונטרולר הנוכחית
require $dir; //מייבא את קובץ מחלקת הקונטרולר הנוכחי
if (!class_exists($currentController, false)) //בודק האם קיים הקונטרולר הנוכחי לאחר הייבוא
throw new \Exception("Controller '$currentController' does not found"); //מציג שגיאה במידה ולא קיים הקונטרולר
} else { //אם לא נמצא הקונטרולר בנתיב
throw new \Exception("Controller '$currentController' does not found"); //מציג שגיאה על כך שנתיב הקונטרולר לא נמצא
}
self::$currentControllerPath = $dir; //שומר את הנתיב לקונטרולר במשתנה במחלקה
self::setCurrentAction(); //פונקציה היוצרת את הפעולה הנוכחית
}
זה הקונטרולר:
<?php
namespace com\controllers;
use com\framework\base\controller;
class mainController extends controller {
public function actionIndex()
{
$this->renderText("Hello world!");
}
}
namespace com\controllers;
use com\framework\base\controller;
class mainController extends controller {
public function actionIndex()
{
$this->renderText("Hello world!");
}
}
לאחר שאני מבצע את הקוד בדפדפן, זה מציג לי שגיאה שהקונטרולר לא נמצא לאחר הייבוא.
למה זה קורה?
והאם הפונקציה הזו כתובה בצורה ייעילה וטובה?